// Biliotecas utilizadas
#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>

#include "Veiculo.h" 
#include "Funcoes.h"
#include "ConstantesGlobais.h"

using namespace std; 
using namespace entregadepedidos::util::funcoes;
using namespace entregadepedidos::util::global;

namespace entregadepedidos{

	namespace entidades{
	
		namespace veiculo{

			//Construtor de um novo Veiculo
			Veiculo::Veiculo(const string &placa, const string &modelo, const string &cor,const int &capacidade){
				setDataSaida(0);
				setDataRetorno(0);
				setPlaca(placa);
				setModelo(modelo);
				setCor(cor);
				setCapacidade(capacidade);
			}
			
			// Desstrutor de um Veiculo
			Veiculo::~Veiculo(){} 
			
			//Atribui��o de Itens da veiculo
			void Veiculo::setDataSaida(const time_t &dataSaida){
				this->dataSaida = dataSaida;
			}
			
			void Veiculo::setDataRetorno(const time_t &dataRetorno){
				this->dataRetorno = dataRetorno;
			}
			
			void Veiculo::setPlaca(const string &placa){
				this->placa = placa; 
			}
			
			void Veiculo::setModelo(const string &modelo){
				this->modelo = modelo; 
			}
			
			void Veiculo::setCor(const string &cor){
				this->cor = cor;
			}
			
			void Veiculo::setCapacidade(const int &capacidade){
				this->capacidade = capacidade; 
			}
			
			//Resgate de atributos
			time_t Veiculo::getDataSaida()const{
				return this->dataSaida;
			}
			
			time_t Veiculo::getDataRetorno()const{
				return this->dataRetorno;
			}
			
			string Veiculo::getPlaca()const {
				return this->placa; 
			}
			
			string Veiculo::getModelo()const {
				return this->modelo; 
			}
			
			string Veiculo::getCor()const{
				return this->cor;
			}
			
			string Veiculo::getCapacidade()const {
				
				string strCapacidade;
				stringstream out;
				
				out << this->capacidade;
					
				strCapacidade = out.str();
				
				return strCapacidade; 
			
			}
			
			//Funcao Imprimir Veiculo
			void Veiculo::ImprimeVeiculo()const {
			
				cout << endl << ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(this->getPlaca(), 12)
				<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(this->getModelo(), 14)
				<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(this->getCor(), 12)
				<< ConstantesGlobais::GET_BARRA() << Funcoes::centralizaPalavra(this->getCapacidade(), 8) << ConstantesGlobais::GET_BARRA();
			
			}

		}
		
	}
	
}
